package 参数传递;

/**
 * @author ycc
 * @date 2024/7/27
 */
class MyClass {
    int value;

    MyClass(int value) {
        this.value = value;
    }

    void modifyValue(MyClass obj) {
        obj.value = 100; // 修改传入的对象的值
    }

    void modify(MyClass obj) {
        System.out.println(obj);
        obj = null; // 修改传入的对象的引用 指向为null, 原来的obj对象还是存在没改变的
    }
}

public class Test {
    /**
     * java对象的应用副本和原对象之间的关系如下：
     * 副本引用和原始引用指向同一个对象实例。
     * 通过副本引用对对象进行的修改会反映在原始引用所指向的对象上。
     * 通过副本引用改变它所指向的对象不会影响原始引用所指向的对象。
     * @param args
     */
    public static void main(String[] args) {
        MyClass originalObj = new MyClass(50);
        System.out.println("Before modification: " + originalObj.value); // 输出：Before modification: 50

//        originalObj.modifyValue(originalObj);
        System.out.println(originalObj);
        originalObj.modify(originalObj);
        System.out.println("After modification: " + originalObj.value); // 输出：After modification: 100
    }
}

